#!/bin/bash

# 日志文件路径
LOG_FILE="/LYH/adsl_restart.log"

# 获取当前时间的函数
current_time() {
    echo "$(date '+%Y-%m-%d %H:%M:%S')"
}

# 先关闭之前运行的 fetch_and_update_ip.py 脚本
ps -ef | grep fetch_and_update_ip | grep -v grep | awk '{print $2}' | xargs -r kill -9

# 添加初始调用 fetch_and_update_ip.py 的重试逻辑
INITIAL_MAX_RETRIES=3
INITIAL_RETRY_COUNT=0
INITIAL_CALL_SUCCESS=false

echo "$(current_time) 开始执行初始 fetch_and_update_ip.py 调用..." >> "$LOG_FILE"

while [ $INITIAL_RETRY_COUNT -lt $INITIAL_MAX_RETRIES ]; do
    /usr/bin/python3 /LYH/fetch_and_update_ip.py --status False
    if [ $? -eq 0 ]; then
        echo "$(current_time) 初始 fetch_and_update_ip.py 脚本执行成功。" >> "$LOG_FILE"
        INITIAL_CALL_SUCCESS=true
        break
    else
        INITIAL_RETRY_COUNT=$((INITIAL_RETRY_COUNT + 1))
        echo "$(current_time) 初始 fetch_and_update_ip.py 脚本执行失败，正在重试... ($INITIAL_RETRY_COUNT/$INITIAL_MAX_RETRIES)" >> "$LOG_FILE"
        if [ $INITIAL_RETRY_COUNT -lt $INITIAL_MAX_RETRIES ]; then
            sleep 5
        fi
    fi
done

# 如果初始调用在重试后仍然失败，则重启服务器
if [ "$INITIAL_CALL_SUCCESS" = false ]; then
    echo "$(current_time) 初始 fetch_and_update_ip.py 调用在${INITIAL_MAX_RETRIES}次尝试后仍然失败，准备重启服务器..." >> "$LOG_FILE"
    echo "$(current_time) 服务器将在5秒后重启..." >> "$LOG_FILE"
    sleep 5
    sudo /sbin/reboot
    exit 1
fi

# 记录操作到日志文件
echo "$(current_time) 正在重启ADSL连接并重新运行Python脚本..." >> "$LOG_FILE"

echo "$(current_time) 正在重启ADSL连接"

# ADSL重连的最大重试次数
MAX_RETRIES=3
RETRY_COUNT=0
ADSL_STATUS=""

# 保持原有的ADSL重连逻辑
while [ $RETRY_COUNT -lt $MAX_RETRIES ]; do
    # 关闭之前的拔取服务
    sudo /usr/sbin/adsl-stop
    sudo /usr/bin/pkill ppp
    sudo /usr/bin/pkill pppd
    sleep 3

    # 启动拔取服务
    sudo /usr/sbin/adsl-start
    sleep 5

    # 使用ip命令检查PPP0接口是否存在并分配了IPv4地址
    if /usr/sbin/ip addr show ppp0 | grep 'inet'; then
        echo "$(current_time) ADSL连接成功"
        ADSL_STATUS="success"
        
        echo "$(current_time) 正在启动 fetch_and_update_ip.py 脚本..." >> "$LOG_FILE"
        /usr/bin/python3 /LYH/fetch_and_update_ip.py --status True
        
        if [ $? -ne 0 ]; then
            echo "$(current_time) fetch_and_update_ip.py 脚本执行失败。" >> "$LOG_FILE"
        else
            echo "$(current_time) fetch_and_update_ip.py 脚本成功执行。" >> "$LOG_FILE"
        fi
        
        break
    else
        echo "$(current_time) ADSL连接失败，正在重试... ($((RETRY_COUNT + 1))/$MAX_RETRIES)"
        RETRY_COUNT=$((RETRY_COUNT + 1))
        ADSL_STATUS="failed"
        sleep 3
    fi
done

# 如果ADSL重连失败，重启服务器
if [ "$ADSL_STATUS" = "failed" ] && [ $RETRY_COUNT -eq $MAX_RETRIES ]; then
    echo "$(current_time) ADSL连接在${MAX_RETRIES}次尝试后仍然失败，准备重启服务器..." >> "$LOG_FILE"
    echo "$(current_time) 服务器将在5秒后重启..." >> "$LOG_FILE"
    sleep 5
    sudo /sbin/reboot
    exit 1
fi